/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package views.utilitario;

import models.entidades.AtributoTabAux;
import models.entidades.RestricaoNulidade;


/**
 *
 * @author Wenderson
 */
public class AtributosTabAuxSem extends AbstractTabelaDinamica {
    private String schema;
    private String nomeTabela;
    private String nomeAtributo;
    private String tipo;
    private int tamanho;
    private int precisao;
    private int scala;
    private boolean chaveNatural;
    private boolean dataCarga;
    private boolean nulo;

    public AtributosTabAuxSem() {};
    
    public AtributosTabAuxSem(AtributosDescricao atributo) {
        this.schema = atributo.getSchema();
        this.nomeTabela = atributo.getNomeTabela();
        this.nomeAtributo = atributo.getNomeAtributo();
        this.tipo = atributo.getTipo();
        this.tamanho = atributo.getTamanho();
        this.precisao = atributo.getPrecisao();
        this.scala = atributo.getScala();
        this.chaveNatural = false;
        this.dataCarga = false;
        this.nulo = false;
    }

    @Override
    public String[] getColumns() {
        return new String[] {"Schema", "Tabela", "Nome", "Tipo", "Chave", "Data Carga", "Nulo"};
    }

    @Override
    public Class getClass(int index) {
        switch (index) {
            case 0:
            case 1:
            case 2:
            case 3: return String.class;
            case 4: 
            case 5: 
            case 6: return Boolean.class;
            default: return Object.class;
        }
    }

    @Override
    public Object getValue(int index) {
        switch (index) {
            case 0: return this.schema;
            case 1: return this.nomeTabela;
            case 2: return this.nomeAtributo;
            case 3: return this.tipo;
            case 4: return this.chaveNatural;
            case 5: return this.dataCarga;
            case 6: return this.nulo;
            default: return null;
        }
    }

    @Override
    public void setValue(int index, Object value) {
        switch (index) {
            case 0: this.schema = (String) value; break;
            case 1: this.nomeTabela = (String) value; break;
            case 2: this.nomeAtributo = (String) value; break;
            case 3: this.tipo = (String) value; break;
            case 4: this.chaveNatural = (Boolean) value; break;
            case 5: this.dataCarga = (Boolean) value; break;
            case 6: this.nulo = (Boolean) value; break;
        }
    }
    
    @Override
    public boolean isEditable(int index) {
        switch (index) {
            case 0:
            case 1:
            case 2:
            case 3: return false;
            case 4: 
            case 5: 
            case 6: return true;
            default: return false;
        }
    }
    
    public AtributoTabAux getAtributoAux() {
        AtributoTabAux atrAux = new AtributoTabAux();
        atrAux.setNome(this.nomeAtributo);
        atrAux.setTipoDado(this.tipo);
        atrAux.setTamanho(this.tamanho);
        atrAux.setPrecisao(this.precisao);
        atrAux.setEscala(this.scala);
        
        //TODO: TAB AUX - AUDITORIA
        RestricaoNulidade rn = new RestricaoNulidade();
        rn.setCdNulidade(this.nulo ? 1 : 2);
        
        atrAux.setRestricaoNulidade(rn);
        
        return atrAux;
    }

    public String getNomeAtributo() {
        return nomeAtributo;
    }

    public void setNomeAtributo(String nomeAtributo) {
        this.nomeAtributo = nomeAtributo;
    }

    public String getNomeTabela() {
        return nomeTabela;
    }

    public void setNomeTabela(String nomeTabela) {
        this.nomeTabela = nomeTabela;
    }

    public int getPrecisao() {
        return precisao;
    }

    public void setPrecisao(int precisao) {
        this.precisao = precisao;
    }

    public int getScala() {
        return scala;
    }

    public void setScala(int scala) {
        this.scala = scala;
    }

    public String getSchema() {
        return schema;
    }

    public void setSchema(String schema) {
        this.schema = schema;
    }

    public int getTamanho() {
        return tamanho;
    }

    public void setTamanho(int tamanho) {
        this.tamanho = tamanho;
    }

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    public boolean isChaveNatural() {
        return chaveNatural;
    }

    public void setChaveNatural(boolean chaveNatural) {
        this.chaveNatural = chaveNatural;
    }

    public boolean isDataCarga() {
        return dataCarga;
    }

    public void setDataCarga(boolean dataCarga) {
        this.dataCarga = dataCarga;
    }

    public boolean isNulo() {
        return nulo;
    }

    public void setNulo(boolean nulo) {
        this.nulo = nulo;
    }
}
